home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #5 / Amiga Plus CD - 2000 - No. 5.iso / Tools / Dev / fpc / oop / exectest.pas.bak < prev   
Text File  |  2000-01-01  |  3KB  |  143 lines

  1. PROGRAM test;
  2.  
  3. {
  4.     A small test of linklist unit.
  5.  
  6.     nils.sjoholm@mailbox.swipnet.se
  7. }
  8.  
  9. uses exec, execobject,strings;
  10.  
  11.  
  12.     VAR
  13.  
  14.     Mylist   : pList;
  15.     MyNode   : pNode;
  16.     i        : Longint;
  17.     temp     : Longint;
  18.     buffer   : PChar;
  19.     bufsize  : Longint;
  20.     templist : pList;
  21.     myexec : pExecObject;
  22.    
  23. BEGIN
  24.     myexec := New(pExecObject,Create);
  25.     if not assigned(myexec) then begin
  26.        writeln('Couldn''t allocate ExecObject');
  27.        halt(20);
  28.     end;
  29.     
  30.  
  31.     myexec^.AddS('Monday');
  32.     myexec^.AddS('Tuesday');
  33.     myexec^.AddS('Wednesday');
  34.     myexec^.AddS('Thursday');
  35.     myexec^.AddS('Friday');
  36.     myexec^.AddS('Saterday');
  37.     MyNode := myexec^.AddS('Sunday');
  38.     
  39.     if not assigned(MyNode) then begin
  40.        writeln('Can''t allocate memory for strings');
  41.        Dispose(myexec,Free);
  42.        halt(20);
  43.     end;
  44.  
  45.     writeln;
  46.     WriteLN('This is the list');
  47.     myexec^.PrintList;
  48.  
  49.     writeln;
  50.     WriteLN('Now we are going to remove the last node');
  51.     WriteLN('>> Press return');
  52.     readln;
  53.     myexec^.DeleteLast;
  54.     myexec^.PrintList;
  55.     writeln;
  56.  
  57.     WriteLN('>> Press return to get the size of the list');
  58.     writeln;
  59.     readln;
  60.     WriteLN('The size of allocated list is ', myexec^.SizeOfList);
  61.     writeln;
  62.  
  63.     writeln('Now we are going to print all strings' +#10+ 'in the list with the internal commands');
  64.     WriteLN('>> Press return');
  65.     readln;
  66.  
  67.     i := myexec^.Count;
  68.     MyNode := myexec^.First;
  69.     FOR temp := 1 TO i DO BEGIN
  70.         WriteLN(MyNode^.ln_Name);
  71.         MyNode := myexec^.Next(MyNode);
  72.     END;
  73.  
  74.     writeln;
  75.     WriteLN('We will move the last node to the top');
  76.     WriteLN('>> Press return');
  77.     readln;
  78.     MyNode := myexec^.Last;
  79.     myexec^.Top(MyNode);
  80.     myexec^.PrintList;
  81.     writeln;
  82.  
  83.     WriteLN('We shall change the value in one node');
  84.     WriteLN('>> Press return');
  85.     readln;
  86.     MyNode := myexec^.First;
  87.     MyNode := myexec^.Next(MyNode);
  88.     myexec^.UpDateS(MyNode,'This is the new day');
  89.     myexec^.PrintList;
  90.     writeln;
  91.  
  92.     MyNode := myexec^.Next(MyNode);
  93.     WriteLN('Now we delete one node');
  94.     WriteLN('>> Press return');
  95.     readln;
  96.     WriteLN('This node is going to be deleted ',myexec^.GetData(MyNode));
  97.     myexec^.Delete(MyNode);
  98.     myexec^.PrintList;
  99.  
  100.     writeln;
  101.     WriteLN('Sort the list');
  102.     WriteLN('>> Press return');
  103.     readln;
  104.     myexec^.Sort;
  105.     myexec^.PrintList;
  106.  
  107.     writeln;
  108.     writeln('Search for a node, in this case Friday');
  109.     WriteLN('>> Press return');
  110.     readln;
  111.     MyNode := myexec^.FindS('Friday');
  112.     IF assigned(MyNode) THEN BEGIN
  113.         WriteLN('found the node ',MyNode^.ln_Name);
  114.         
  115.     END ELSE BEGIN
  116.         WriteLN('Node not found');
  117.     END;
  118.  
  119.     writeln;
  120.     WriteLN('And now copy the list to a stringbuffer' +#10+ 'and print it');
  121.     WriteLN('>> Press return');
  122.     readln;
  123.     bufsize := myexec^.SizeOfList;
  124.     buffer := StrAlloc(bufsize);
  125.     myexec^.ToBuffer(buffer);
  126.     WriteLN(buffer);
  127.  
  128.     writeln;
  129.     WriteLN('Press return to destroy the list');
  130.     readln;
  131.     Dispose(myexec,Free);
  132.     writeln;
  133.     WriteLN('All done');
  134.    
  135. END.
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.